package gsw.common.aop;

import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import java.util.Random;

import gsw.common.aop.annotation.BehaviorTrace;
import gsw.common.aop.annotation.UserInfoBehaviorTrace;
import gsw.common.R;

/**
 * AOP(Aspect Oriented Programming)： 面向切面编程，通过预编译方式和运行期动态代理实现程序功能的统一维护
 */
public class ActivityAOP extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_aop);
    }

    /**
     * 添加自定义注解，aspect框架会自动进行切入处理。可以添加多个注解。
     */
    @BehaviorTrace("摇一摇")
    public void mShake(View view) {
        SystemClock.sleep(new Random().nextInt(2000));
    }

    /**
     * 添加自定义注解，aspect框架会自动进行切入处理。可以添加多个注解。
     */
    @BehaviorTrace("语音消息")
    public void mAudio(View view) {
        SystemClock.sleep(new Random().nextInt(2000));
    }

    /**
     * 添加自定义注解，aspect框架会自动进行切入处理。可以添加多个注解。
     */
    @UserInfoBehaviorTrace("视频消息")
    @BehaviorTrace("视频消息")
    public void mVideo(View view) {
        SystemClock.sleep(new Random().nextInt(2000));
    }

    /**
     * 添加自定义注解，aspect框架会自动进行切入处理。可以添加多个注解。
     */
    @UserInfoBehaviorTrace("说说功能")
    public void saySomething(View view) {
        SystemClock.sleep(new Random().nextInt(2000));
    }
}
